package cn.com.yx.ms.service;


import cn.com.yx.ms.application.web.ApiPager;
import cn.com.yx.ms.application.web.ApiQueryBase;
import cn.com.yx.ms.domain.TestModel;
import cn.com.yx.ms.domain.dbmodel.DevEquStore;
import cn.com.yx.ms.domain.live.LiveConfigMainModel;
import cn.com.yx.ms.domain.live.LiveConfigMainSavedModel;
import cn.com.yx.ms.domain.live.LiveDevModel;
import cn.com.yx.ms.domain.mq.upstream.MqPushLiveConfigModel;
import cn.com.yx.ms.domain.sys.OrgModel;
import cn.com.yx.ms.domain.sys.UserModel;
import cn.yx.framework.configuration.ApiCode;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 直播流相关服务接口
 */
@Component
public interface ILiveService {

    // region << 直播设备列表 >>

    /**
     * 查询直播设备列表
     *
     * @param apiQueryBase
     * @return
     */
    List<LiveDevModel> findLiveDevs(ApiQueryBase apiQueryBase);

    /**
     * 根据设备编号获取单个直播设备
     * @param equipmentguid
     */
    LiveDevModel findLive(String equipmentguid);

    /**
     * 添加站点设备
     * @param devEquStore
     * @return
     * @throws Exception
     */
    ApiCode saveLiveDev(DevEquStore devEquStore);

    /**
     * 删除站点设备
     * @param equipmentguid
     * @return
     */
    ApiCode deleteLiveDev(String equipmentguid);

    // endregion

    // region << 直播配置列表 >>

    /**
     * 查询直播配置列表
     * @param apiQueryBase
     * @return
     */
    List<LiveConfigMainModel> findLiveConfigMainModels(ApiQueryBase apiQueryBase);

    /**
     * 根据配置ID获取配置信息
     * @param cguid
     * @return
     */
    LiveConfigMainSavedModel findLiveConfigMainModel(String cguid);

    /**
     * 根据设备编号获取配置信息
     * @param equipmentno
     * @return
     */
    LiveConfigMainSavedModel findLiveConfigMainModelByEquipmentNo(String equipmentno);

    /**
     * 更改配置名称
     * @param cguid
     * @param configname
     * @return
     */
    ApiCode updateLiveConfigName(String cguid,String configname);

    /**
     * 保存直播设备配置信息
     * @param liveConfigMainSavedModel
     * @return
     */
    ApiCode saveLiveConfigMain(LiveConfigMainSavedModel liveConfigMainSavedModel,boolean single);

    /**
     * 推送直播设备配置信息
     * @param liveConfigMainSavedModel
     * @return
     */
    ApiCode pushLiveConfig(LiveConfigMainSavedModel liveConfigMainSavedModel,boolean single);

    /**
     * 删除直播设备配置信息
     * @param cguid
     * @return
     */
    ApiCode deleteLiveConfig(String cguid);

    // endregion


}